<?php



class PostController extends BackendController {
    /**
     * @return array action filters
     */
    public function filters() {
        return array(
            'accessControl', // perform access control for CRUD operations
            'postOnly + delete', // we only allow deletion via POST request
        );
    }

    /**
     * Specifies the access control rules.
     * This method is used by the 'accessControl' filter.
     * @return array access control rules
     */
    public function accessRules() {
        return array(
            array(
                'allow', // allow all users to perform 'index' and 'view' actions
                'actions' => array('index', 'view'),
                'users'   => array('*'),
            ),
            array(
                'allow', // allow authenticated user to perform 'create' and 'update' actions
                'actions' => array('create', 'update', 'suggestTags'),
                'users'   => array('@'),
            ),
            array(
                'allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions' => array('admin', 'delete'),
                'roles'   => array('Super', 'Administrators'),
            ),
            array(
                'deny', // deny all users
                'users' => array('*'),
            ),
        );
    }

    /**
     * Displays a particular model.
     *
     * @param integer $id the ID of the model to be displayed
     */
    public function actionView($id) {
        $this->render('view', array(
            'model' => $this->loadModel($id),
        ));
    }

    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.

     */
    public function actionCreate() {
        $this->actionUpdate();
    }

    /**
     * Updates a particular model.
     * If update is successful, the browser will be redirected to the 'view' page.
     *
     * @param integer $id the ID of the model to be updated
     */
    public function actionUpdate($id = '') {
        $model = $id ? $this->loadModel($id) : new Post();
        // Uncomment the following line if AJAX validation is needed
        Helper::performAjaxValidation($model, 'post-form');

        if (Helper::post('Post')) {
            $size = array(
                'w' => '770',
                'h' => '275',
                'thumbW' => '380',
                'thumbH' => '180',
                'typeSize' => ''
            );
            $uploadImage = Helper::uploadImage($model, 'image', 'Post', true, true, $size);
            $model->attributes = Helper::post('Post');
            $model->image = $uploadImage;

            if ($model->save()) {
                Helper::setFlash('successMessage', Helper::t('successMessage'));
                $this->redirect(array('/Admin/default/deleteall'));
            }
        }
        $this->render('update', array(
            'model' => $model,
        ));
    }

    /**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'admin' page.
     *
     * @param integer $id the ID of the model to be deleted
     */
    public function actionDelete($id) {
        $this->loadModel($id)->delete();
        // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
        if (!isset($_GET['ajax'])) {
            $this->redirect(Helper::post('returnUrl') ? Helper::post('returnUrl') : array('admin'));
        }
    }

    /**
     * Lists all models.

     */
    public function actionIndex() {
        $dataProvider = new CActiveDataProvider('Post');
        $this->render('index', array(
            'dataProvider' => $dataProvider,
        ));
    }

    /**
     * Manages all models.

     */
    public function actionAdmin() {
        $model = new Post('search');
        $model->unsetAttributes(); // clear any default values
        if (Helper::get('Post')) {
            $model->attributes = Helper::get('Post');
        }

        if (Yii::app()->request->isPostRequest) {
            Helper::sortRow('Post', Helper::post('post'));
        }

        $this->render('admin', array(
            'model' => $model,
        ));
    }

    public function renderLink($title, $alias) {
        ?>
        <a href="<?php echo url("/Blog/admin/comment/admin", array("alias" => $alias)); ?>"
            title="<?php echo $title; ?>"><?php echo $title ?></a>
    <?php
    }

    /**
     * Suggests tags based on the current user input.
     * This is called via AJAX when the user is entering the tags input.
     */
    public function actionSuggestTags() {
        if (Helper::get('q') && ($keyword = trim(Helper::get('q'))) !== '') {
            $tags = Tags::model()->suggestTags($keyword);
            if ($tags !== array()) {
                echo implode("\n", $tags);
            }
        }
    }

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     *
     * @param integer $id the ID of the model to be loaded
     *
     * @return Post the loaded model
     * @throws CHttpException
     */
    public function loadModel($id) {
        $model = Post::model()->findByPk($id);
        if ($model === null) {
            throw new CHttpException(404, 'The requested page does not exist.');
        }

        return $model;
    }
}

